﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SIGCBI.Entities;
using SIGCBI.Repository;
using Microsoft.Practices.Unity;

namespace SIGCBI.BusinessLogic
{
    public interface IDetallePecosaBL
    {
        List<DETALLE_PECOSA> GetAllDetallePecosaByPecosaId(Int32 idPecosa);
        List<DETALLE_PECOSA> GetFromDetallePecosaByProductoNombreAndPecosaId(string descripcion, Int32 idPecosa);
        DETALLE_PECOSA GetFromDetallePecosaByProductoIdAndPecosaId(Int32 idProducto, Int32 idPecosa);
        bool GetAllDetallePecosasByPecosaId(Int32 idPecosa);
        void RemoveDetallePecosaByProductoIdAndPecosaId(int idProducto, int idPecosa);

        List<DETALLE_PECOSA> GetFromKardexByNombreProducto_Fechas_IdProducto_OfPecosa(string descripcion, DateTime? fec1, DateTime? fec2, int IdProducto);
        List<DETALLE_PECOSA> GetAllFromKardexByIdProducto_OfPecosa(int IdProducto);

    }

    public class DetallePecosaBL : IDetallePecosaBL
    {
        [Dependency]
        public IDetallePecosaRepository detallePecosaRepository { get; set; }
        
        public List<DETALLE_PECOSA> GetAllDetallePecosaByPecosaId(int idPecosa)
        {
            return detallePecosaRepository.GetAllDetallePecosaByPecosaId(idPecosa);
        }

        public List<DETALLE_PECOSA> GetFromDetallePecosaByProductoNombreAndPecosaId(string descripcion, int idPecosa)
        {
            return detallePecosaRepository.GetFromDetallePecosaByProductoNombreAndPecosaId(descripcion, idPecosa);
        }

        public DETALLE_PECOSA GetFromDetallePecosaByProductoIdAndPecosaId(int idProducto, int idPecosa)
        {
            return detallePecosaRepository.GetFromDetallePecosaByProductoIdAndPecosaId(idProducto, idPecosa);
        }

        public bool GetAllDetallePecosasByPecosaId(int idPecosa)
        {
            return detallePecosaRepository.GetAllDetallePecosasByPecosaId(idPecosa);
        }

        public void RemoveDetallePecosaByProductoIdAndPecosaId(int idProducto, int idPecosa)
        {
            detallePecosaRepository.RemoveDetallePecosaByProductoIdAndPecosaId(idProducto, idPecosa);
        }


        public List<DETALLE_PECOSA> GetFromKardexByNombreProducto_Fechas_IdProducto_OfPecosa(string descripcion, DateTime? fec1, DateTime? fec2, int IdProducto)
        {
            return detallePecosaRepository.GetFromKardexByNombreProducto_Fechas_IdProducto_OfPecosa(descripcion, fec1, fec2, IdProducto);
        }

        public List<DETALLE_PECOSA> GetAllFromKardexByIdProducto_OfPecosa(int IdProducto)
        {
            return detallePecosaRepository.GetAllFromKardexByIdProducto_OfPecosa(IdProducto);
        }
    }
}
